commonlibsse_ng\re\e/
ExtraEnchantment.rs1use core::ptr::NonNull;
2
3use crate::re::BSExtraData::{BSExtraData, BSExtraDataVtbl, DerivedBSExtraData};
4use crate::re::EnchantmentItem::EnchantmentItem;
5use crate::re::ExtraDataType::ExtraDataType;
6use crate::re::offsets_rtti::RTTI_ExtraEnchantment;
7use crate::re::offsets_vtable::VTABLE_ExtraEnchantment;
8use crate::rel::id::VariantID;
9
10#[repr(C)]
11#[derive(Debug, PartialEq)]
12pub struct ExtraEnchantment {
13 pub __base: BSExtraData,
15 pub enchantment: Option<NonNull<EnchantmentItem>>,
16 pub charge: u16,
17 pub removeOnUnequip: bool,
18 pub pad1B: u8,
19 pub pad1C: u32,
20}
21
22const _: () = {
23 assert!(core::mem::offset_of!(ExtraEnchantment, __base) == 0x0);
24 assert!(core::mem::offset_of!(ExtraEnchantment, enchantment) == 0x10);
25 assert!(core::mem::offset_of!(ExtraEnchantment, charge) == 0x18);
26 assert!(core::mem::offset_of!(ExtraEnchantment, removeOnUnequip) == 0x1A);
27 assert!(core::mem::offset_of!(ExtraEnchantment, pad1B) == 0x1B);
28 assert!(core::mem::offset_of!(ExtraEnchantment, pad1C) == 0x1C);
29 assert!(core::mem::size_of::<ExtraEnchantment>() == 0x20);
30};
31
32impl DerivedBSExtraData for ExtraEnchantment {
33 #[inline]
34 fn get_extra_data(&self) -> &BSExtraData {
35 &self.__base
36 }
37
38 #[inline]
39 fn get_extra_data_type() -> ExtraDataType {
40 Self::EXTRA_DATA_TYPE
41 }
42}
43
44impl ExtraEnchantment {
45 pub const RTTI: VariantID = RTTI_ExtraEnchantment;
47
48 pub const VTABLE: [VariantID; 1] = VTABLE_ExtraEnchantment;
50
51 pub const EXTRA_DATA_TYPE: ExtraDataType = ExtraDataType::Enchantment;
53}
54
55#[repr(C)]
59pub struct ExtraEnchantmentVtbl {
60 pub __base: BSExtraDataVtbl,
61}